package com.ktgj.customer.service;

import java.util.List;

import com.ktgj.customer.domain.TravelGroup;
import com.ktgj.customer.domain.TravelGroupDetailVo;
import com.ktgj.customer.domain.TravelGroupDto;
import com.ktgj.customer.domain.TravelGroupListVo;
import com.ktgj.customer.domain.vo.GroupDetailsVo;
import com.ktgj.customer.domain.vo.InsertProductVo;
import com.ktgj.customer.domain.vo.TravelGroupDetailsVo;
import com.ktgj.customer.domain.vo.TravelGroupVo;

import javax.servlet.http.HttpServletRequest;

/**
 * 旅游团Service接口
 * 
 * @author ruoyi
 * @date 2021-10-26
 */
public interface ITravelGroupService 
{
    /**
     * 查询旅游团
     * 
     * @param groupId 旅游团ID
     * @return 旅游团
     */
    public TravelGroup selectTravelGroupById(Long groupId);

    /**
     * 查询旅游团列表
     * 
     * @param travelGroupDto 旅游团
     * @return 旅游团集合
     */
    public List<TravelGroupDto> selectTravelGroupList(TravelGroupDto travelGroupDto);

    /**
     * 新增旅游团
     * 
     * @param travelGroupDto 旅游团
     * @return 结果
     */
    public int insertTravelGroup(TravelGroupDto travelGroupDto);

    /**
     * 修改旅游团
     * 
     * @param travelGroupDto 旅游团
     * @return 结果
     */
    public int updateTravelGroup(TravelGroup travelGroupDto);

    /**
     * 批量删除旅游团
     * 
     * @param groupIds 需要删除的旅游团ID
     * @return 结果
     */
    public int deleteTravelGroupByIds(Long[] groupIds);

    /**
     * 删除旅游团信息
     * 
     * @param groupId 旅游团ID
     * @return 结果
     */
    public int deleteTravelGroupById(Long groupId);

    /**
     * 查询旅游团列表
     * @return
     */
    List<TravelGroupListVo> queryGroupList();

    /**
     * 查询旅游团详情
     * @param groupId
     * @return
     */
    TravelGroupDetailVo queryTravelGroupDetail(Long groupId);

    /**
     * 旅游产品列表
     * */
    public List<TravelGroupVo> travelGroupVoList() throws Exception;

    /**
     * 旅游产品详情
     * */
    public TravelGroupDetailsVo travelProductDetails(Long groupId) throws Exception;

    /**
     * 查询指定旅游产品成团规则
     */
    public String selectTravelGroupByGroupId(Long groupId) throws Exception;

    /**
     * 旅游填写订单
     * */
    public GroupDetailsVo groupDetails(HttpServletRequest request, Long id, String setOffTime, String finishTime);

    /**
     * 新建团产品
     * */
    public int insertProduct(HttpServletRequest request, InsertProductVo insertProductVo) throws Exception;

    /**
     * 查询待修改的团
     * */
    public InsertProductVo updateGroup(Long id);

    /**
     * 修改团
     * */
    public int group(InsertProductVo insertProductVo) throws Exception;
}
